Data processors have been developed to function as binary machines whose inputs and outputs are interpreted as ones or zeroes, and no other possibilities may exist. While this works well in most situations, sometimes an answer is not simply "yes" or "no," but somewhere in between. A concept referred to as "fuzzy logic" was developed to enable data processors based on binary logic to provide an answer between "yes" and "no."
Fuzzy logic is a logic system which has membership functions with fuzzy boundaries. Membership functions translate subjective expressions, such as "a temperature is warm," into a value which typical data processors can recognize. A label such as "warm" is used to identify a range of input values whose boundaries are not points at which the label is true on one side and false on the other side. Rather, in a system which implements fuzzy logic, the boundaries of the membership functions gradually change and may overlap a boundary of an adjacent membership set. Therefore, a degree of membership is typically assigned to an input value. For example, if a range of temperatures provide the membership functions, an input temperature may fall in the overlapping areas of both the functions labeled "cool" and "warm." Further processing would then be required to determine a degree of membership in each of the membership functions (i.e. the degree to which the current temperature fits into each of the membership sets cool and warm).
A step referred to as "fuzzification" is used to relate an input to a membership function in a system which implements fuzzy logic. The fuzzification process attaches concrete numerical values to subjective expressions such as "the temperature is warm." These numerical values attempt to provide a good approximation of human perception.
After the fuzzification step, a step referred to as rule evaluation is executed. During the rule evaluation step, rule expressions that depend on fuzzy input values are evaluated to derive fuzzy outputs. For example, assume a rule to be evaluated may be stated as: EQU If (Temperature is warm) and (Pressure is high), then (Fan speed is medium).
In this rule, two antecedents, "Temperature is warm" and "Pressure is high" must be evaluated to determine a rule strength of the consequence, "Fan speed is medium." During the rule evaluation step, the degree to which an antecedent is true affects the degree to which the rule is true. The minimum of the antecedents is applied as the rule strength of the consequence of the rule. Therefore, if more than one rule is evaluated, and the fan is given more than one instruction, the rule strengths of the consequences of each of the rules are collectively used to determine an action of the fan. For example, the rule provided above may be evaluated to have a rule strength of X. Additionally, a second rule is evaluated to turn the fan on at a high speed with a rule strength of Y, where Y is greater than X. A last step in a fuzzy logic operation is to provide an appropriate action in response to the fuzzy outputs provided by the rule evaluation step.
The last step in the fuzzy logic process is referred to as "defuzzification." This step resolves competing results of the rule evaluation step into a single action. Defuzzification is the process of combining all of the fuzzy outputs into a composite result which may be applied to a standard data processing system. For more information about fuzzy logic, refer to an article entitled "Implementing Fuzzy Expert Rules in Hardware" by James M. Sibigtroth. The article was published in the April 1992 issue of AI EXPERT on pages 25 through 31.
In summary, rules are made up of a series of premises (antecedents) followed by one or more actions (consequences). Each antecedent corresponds to a fuzzy input and each action corresponds to a fuzzy output. In a hardware implementation of the rule evaluation step, dedicated connections and circuits are used to relate fuzzy inputs to fuzzy outputs. This approach often requires dedicated memory circuitry and is inflexible. In a software implementation of the rule evaluation step, a program of instructions is used to evaluate rules. The software approach is typically slower than the hardware approach and requires a significant amount of program memory. In an industry where data must be computed, moved, and manipulated as quickly as possible, fast execution times are essential. Therefore, software is not a viable solution for some applications.
Therefore, a need exists for a circuit or method for performing the rule evaluation step quickly, but without extensive hardware requirements. The speed typically associated with a hardware solution is needed without the dedicated circuit area usually associated with such a solution.